package edu.ptu.springboot04.utils;

import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.http.HttpServletResponse;

/**
 * HTTP响应工具类，用于统一处理JSON格式的响应输出
 *
 * @BelongsProject: springboot04
 * @BelongsPackage: edu.ptu.springboot04.utils
 * @Author: HYJ
 * @CreateTime: 2025-03-21  21:45
 * @Description: 提供快速构建JSON响应的工具方法
 * 功能特性：
 * 1. 自动设置Content-Type为application/json
 * 2. 自动转换对象为JSON字符串
 * 3. 统一处理响应字符编码(UTF-8)
 * @Version: 1.0
 */
public class ResponseUtil {
    /**
     * 将对象序列化为JSON格式并写入响应
     *
     * @param response HTTP响应对象
     * @param data     需要序列化的数据对象
     * @throws Exception 可能抛出以下异常：
     *                   - IOException 输出流写入失败
     *                   - JsonProcessingException 对象序列化失败
     */
    public static void toResponse(HttpServletResponse response, Object data) throws Exception {
        // 设置响应内容类型为JSON格式
        response.setContentType("application/json;charset=utf-8");

        // 将数据转换为JSON格式并写入响应
        response.getWriter().write(new ObjectMapper().writeValueAsString(data));
    }
}
